package jvm.quote;

import java.util.concurrent.TimeUnit;

/**
 * @author cyt
 * @create 2020-09-11 18:13
 */
public class Strong {
    /**
     * 强引用 是最常见的引用， 首先用 new 关键字创建对象的时候
     * 这个对象就是一个强引用也就是默认的引用类型。 只要强引用的对象
     * 是可触及的， 那么他就不会被回收！如果强引用对象超过了他的作用范围
     * 或者被设置为 null  那就可以被回收了。
     *
     * 只要有强引用在， 当内存不足的时候jvm就算抛出OOM也不会回收掉它！
     */
    public static void main(String[] args) {
        String test_strong_reference = new String("abstractclass.test strong reference");
        String test = test_strong_reference;
        test_strong_reference = null;
        System.gc();

        try {
            TimeUnit.SECONDS.sleep(2);
        } catch (Exception e) {
            e.printStackTrace();
        }
        System.out.println("test_strong_reference - > "+ test_strong_reference);
        System.out.println("abstractclass.test - > "+test);
    }
}
